package br.com.org.pedro.daohibernate;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.org.pedro.dao.CategoriaProdutoDAO;
import br.com.org.pedro.entity.CategoriaProduto;

public class CategoriaProdutoDAOHibernate implements CategoriaProdutoDAO {

	private Session session = null;
	
	public void setSession(Session session){
		this.session = session;
	}
	
	@Override
	public void salvar(CategoriaProduto categoriaProduto) {
		// TODO Auto-generated method stub
		this.session.save(categoriaProduto);
	}

	@Override
	public void atualizar(CategoriaProduto categoriaProduto) {
		// TODO Auto-generated method stub
		this.session.saveOrUpdate(categoriaProduto);
	}

	@Override
	public void excluir(CategoriaProduto categoriaProduto) {
		// TODO Auto-generated method stub
		this.session.delete(categoriaProduto);
	}

	@Override
	public CategoriaProduto carregar(Integer codigo) {
		// TODO Auto-generated method stub
		return (CategoriaProduto) this.session.get(CategoriaProduto.class,codigo);
	}

	@Override
	public CategoriaProduto buscaPorDescricao(String descricao) {
		// TODO Auto-generated method stub
		String hql = "select c from CategoriaProduto c where c.descricao like '%:descricao%' ";
		Query consulta = this.session.createQuery(hql);
		consulta.setString("descricao", descricao);
		
		return (CategoriaProduto) consulta.uniqueResult();
	}

	@Override
	public List<CategoriaProduto> listar() {
		// TODO Auto-generated method stub
		return this.session.createCriteria(CategoriaProduto.class).list();
	}
	
}
